use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

use crate::assistant::chat::ChatApiVersion;
use crate::error::Error;

#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
pub struct ProviderCredentials {}

#[derive(Debug, Serialize, Deserialize, Default, Clone, Builder, PartialEq)]
#[builder(name = "ProviderBuilder")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option), default)]
#[builder(derive(Debug))]
#[builder(build_fn(error = "Error"))]
pub struct Provider {
    pub identifier: String,
    pub name: String,
    pub title: Option<String>,
    pub provider_type: Option<String>,
    pub supported_model_types: Vec<String>,
    pub credentials: Option<ProviderCredentials>,
    pub options: HashMap<String, String>,
    pub description: Option<String>,
}
